perm filename WEBALS.TEX[WEB,ALS]2 blob sn#654612 filedate 1982-04-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	\input basic
C00004 00003	\magnify{1200}
C00013 ENDMK
C⊗;
\input basic
\font D=cmr7 at 14pt % for title only
\font E=cmtt at 15pt % likewise
\font L=cmsa10
\font t=cmtt \def\tt{\:t} % typewriter text
\font m=cmsc10 \def\sc{\:m} % small caps
\font b=cmr9 \def\mc{\:b} % medium caps for names like PASCAL
\font C←cmss8
\font P←cmsss8
\def\.#1{\hbox{\tt#1}}
\def\_{\hskip.06em\vbox{\hrule width.3em}} % underline in identifiers
\def\\#1{\hbox{\it#1\/\hskip.05em}} % italic type for identifiers
\def\{\hbox{\bf#1}}		% boldface type for reserved words
\chcode'27=13 \def↔{\ifmmode{\mathrel{\char'444}}\else{\penalty999\ } }
	% make ↔ tie two words together except in math mode
\def\TEX{T\hbox{\hskip-.1667em\lower.424ex\hbox{E}\hskip-.125em X}}
\def\PASCAL{{\mc PASCAL}}
\def\pb{\.{|...|}}

\def\section #1.{\penalty-50\vskip 12pt plus 3pt minus 3pt
	\noindent{\bf #1.}\quad\!}
\def\yskip{\vskip 3pt plus 3pt minus 1pt}
\def\sp{\char'40 } % visible blank space in typewriter font
\def\bk{\char'134 } % backslash character in typewriter font
\def\lb{\char'173 } % left brace in typewriter font
\def\rb{\char'175 } % right brace in typewriter font
\def\ul{\char'32 } % underline character in typewriter font

\def\hang{\hangindent 4em\ \unskip}
\magnify{1200}
\output{\page}
\ctrline{The New \.{WEB} Programming System}

\vskip 20 pt
\ \.{WEB} is a new computer-programming system created by Donald E. Knuth that
combines the programming facility of \PASCAL\ with the documentation
capability of \TEX.

The \.{WEB} system allows one to prepare a single document that contains all
the information that is needed both to generate the desired \PASCAL\ program
and to produce a well-formatted document describing the program in as much
detail as the writer may desire. This greatly simplifies the task of
maintaining compatability between the program and its documentation.  In
addition, \.{WEB} provides a relatively simple macro facility and it allows
the program to be written in a series of small easily understood modules.
The net effect is that it is actually easier to write and debug a program
in \.{WEB} than it would be to write the program directly in \PASCAL.  The user
of \.{WEB} must, of course, be familiar with both \TEX\ and \PASCAL.

The \.{WEB} system consists of two special pre-compilers that are used to
process original source files written in \.{WEB}. These pre-processors
were, of course, also written in \.{WEB}.  One of these pre-compilers, called
\.{TANGLE}, extracts and re\-arranges the necessary information to produce
a syntactically correct \PASCAL\ source file that may then be compiled
with the usual \PASCAL\ compiler.

The second pre-compiler, called \.{WEAVE}, takes care of typographic
details having to do with the page layout and the use of indentation,
italics, boldface, etc., to generate a pleasing document. \.{WEAVE} also
supplies a table of contents and extensive cross-index information that it
gathers automatically.  It then generates the necessary source file for
use with \TEX\ to produce the final hard-copy documentation.

\ \.{WEB} and the current versions of \.{TANGLE} and \.{WEAVE} are
described in a hard-copy document called ``The \.{WEB} System of
Structured Documentation'' by Donald E.  Knuth.  Two appendices in this
document describe \.{TANGLE} and \.{WEAVE}.  These appendices were, of
course, written in \.{WEB} and they demonstrate the results that can be
achieved using the \.{WEB} language.

As contrasted with the earlier release, the present versions of \.{TANGLE}
and \.{WEAVE} will each accept two input files, one being the usual
\.{.WEB} input file and the second being a \.{.CH} change file.  You will
find this dual-input feature useful when working with a master \.{WEB}
file that has been received from elsewhere (e.g., \.{TANGLE.WEB},
\.{WEAVE.WEB} or \.{TEX.WEB}).  When changes are desirable to customize
the program for your local computer system, these changes may be
generated, debugged, and maintained as a separate file without altering
the master \.{WEB} file.  Once the change file has been prepared, it may
be used with new releases of the master \.{WEB} file with little or no
modifications.

Magnetic tapes are currently being supplied containing the following files:
\.{TANGLE.WEB}, \.{TANGLE.PAS}, \.{TANGLE.TEX}, \.{TANGLE.SUAI-CHANGES},
\.{WEAVE.WEB}, \.{WEAVE.PAS}, \.{WEAVE.TEX}, \.{WEAVE.SUAI-CHANGES},
\.{BASIC.TEX}, and \.{WEBHDR.TEX}.

\vfill 
{\noindent Stanford University}

{\noindent APRIL 27, 1982}

\end
\eject
\ctrline{To Bootstrap \.{TANGLE}}

\vskip 20 pt
\ctrline{If preliminary \.{TANGLE} is on system}

$$\vbox{\halign{#\quad\hfill⊗#\hfill\cr
1.⊗Copy  \.{TANGLE.WEB} and \.{TANGLE.CH} from tape.\cr
2.⊗Modify \.{TANGLE.CH} to allow for your particular system dependencies.\cr
3.⊗Check \.{system dependencies} in index of hard-copy report for other places.\cr
4.⊗Copy \.{TANGLE.WEB} as \.{TTEM.WEB}.\cr
5.⊗Modify \.{TTEM.WEB}, replacing modules with those copied from \.{TANGLE.CH}.\cr
⊗note: \.{TANGLE.WEB} should not be modified.\cr
6.⊗Run old \.{TANGLE} on \.{TTEM.WEB} to produce \.{TTEM.PAS}.\cr
7.⊗Compile \.{TTEM.PAS}\cr
8.⊗Run \.{TTEM} on \.{TANGLE.WEB} and \.{TANGLE.CH} to produce \.{TTTEM.PAS}.\cr
9.⊗Compare \.{TTEM.PAS} with \.{TTTEM.PAS} and redo from 2. if different.\cr
10.⊗Rename all \.{TTEM.*} files to \.{TANGLE.*}, replacing old files.\cr}}$$

\vskip 20 pt
\ctrline{If preliminary \.{TANGLE} is not on system}

$$\vbox{\halign{#\quad\hfill⊗#\hfill\cr
1.⊗Copy  \.{TANGLE.WEB} and \.{TANGLE.CH} from tape.\cr
2.⊗Modify \.{TANGLE.CH} to allow for your particular system dependencies.\cr
⊗note: \.{TANGLE.WEB} should not be modified.\cr
3.⊗Check \.{system dependencies} in index of hard-copy report for other places.\cr
4.⊗Copy \.{TANGLE.PAS} from tape as \.{TTEM.PAS}.\cr
5.⊗Hand modify \.{TTEM.PAS} to incorporate system changes.\cr
⊗if this is too difficult, get some one with a running \.{TANGLE} to help you.\cr
6.⊗Compile \.{TTEM.PAS}\cr
7.⊗Run \.{TTEM} on \.{TANGLE.WEB} and \.{TANGLE.CH} to produce \.{TTTEM.PAS}.\cr
8.⊗Compare \.{TTEM.PAS} with \.{TTTEM.PAS} and redo from 2. if different.\cr
9.⊗Rename all \.{TTEM.*} files to \.{TANGLE.*}, replacing old files.\cr}}$$

\vskip 20 pt
\ctrline{To Install \.{WEAVE}}

$$\vbox{\halign{#\quad\hfill⊗#\hfill\cr
1.⊗Copy  \.{WEAVE.WEB} and \.{WEAVE.CH} from tape.\cr
2.⊗Modify \.{WEAVE.CH} to allow for your particular system dependencies.\cr
3.⊗Check \.{system dependencies} in index of hard-copy report for other places.\cr
4.⊗Run \.{TANGLE} on \.{WEAVE.WEB} and \.{WEAVE.CH} to produce \.{WEAVE.PAS}.\cr
5.⊗Compile and run \.{WEAVE} on \.{WEAVE.WEB} and your \.{WEAVE.CH}.\cr
6.⊗Run \.{WEAVE} on \.{TANGLE.WEB} and your \.{TANGLE.CH}.\cr
7.⊗Run \TEX\ on \.{TANGLE.TEX} and on \.{WEAVE.TEX}.\cr
8.⊗Your individualized documentation is now complete.\cr}}$$

\vfill

\end